package ch.penas.business.service;

import java.util.List;

import ch.penas.business.dom.Agenda;
import ch.penas.business.dom.Formateur;
import ch.penas.business.dom.LoginFormateur;
import ch.penas.business.dom.RechercheAgenda;
import ch.penas.business.dom.RechercheFormateur;

/** @author Daniel */
public interface AgendaService {

	void searchFormateurPourAgenda(RechercheFormateur f);

    /** Permet d'ajouter un evenement a lagenda.
     *
     * @param mAgendaAddEvent est egale a un evenement de lagenda
     */
    void addEvent(Agenda mAgendaAddEvent);

    /** Permet d'afficher les ellement du planning.
     *
     * @return la liste des evenement du planning
     */
    List<Agenda> getAll();

    /** Permet d'ajouter un evenement a la base de donnée SQL.
     *
     * @param mAgendaAdd est egal a un evenement de l'agenda
     * a ajouter a la base de donnée SQL
     */
    void add(Agenda mAgendaAdd);

    /** Permet de supprimer un evenement de la base de donnée SQL.
     *
     * @param mAgendaDel est egale a un evenement de l'agenda
     * a supprimer de la base de donnée SQL
     */
    void del(Agenda mAgendaDel);

    /** Permet de modifier un evenement de la base de donnée SQL.
     *
     * @param mAgendaUpd est egale a un evenement de l'agenda
     * a modifier de la base de donnée SQL
     */
    void update(Agenda mAgendaUpd);

    /** Permet de rechercher un un formateur étant dans l'agenda.
     *
     * @param mRechercheutilisateur est egal au formateur de la recherche
     */
    void search(RechercheAgenda mRechercheutilisateur);

    /** Permet d'ajouter des evenement du planning a la liste du planning.
     *
     * @param mAgendaAddSearchList est egal a un evenement du planning
     * a ajouter a la liste des evenement
     */
    void addRecherche(Agenda mAgendaAddSearchList);

     /** Permet de ce loger a son agenda.
      *
      * @param mLoginFormateur est egale au logine entrer
      * pour ce conneter a son agenda
      */
    void login(LoginFormateur mLoginFormateur);

    /** Permet de retourner true si l'utilisateur est reconu ou
     *  false si l'utilisateur n'est pas reconu.
     *
     * @return un boolean (true ou false)
     */
    boolean getLoginIsTrue();

    /** Permet de recupéré le user en cour d'utilisation.
     *
     * @return le user
     */
    String getLoginUser();

    /** Permet de retourner le user rechercher.
     *
     * @return le user rechercher
     */
    Agenda getTempsRechercheAgenda();
    
    Formateur getTempsRechercheFormateur();
    
    List<Formateur> getmSearchFormateurList();
}